/*
 * Tencent is pleased to support the open source community by making
 * 蓝鲸智云 - 配置平台 (BlueKing - Configuration System) available.
 * Copyright (C) 2017 Tencent. All rights reserved.
 * Licensed under the MIT License (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at http://opensource.org/licenses/MIT
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on
 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 * either express or implied. See the License for the
 * specific language governing permissions and limitations under the License.
 * We undertake not to change the open source license (MIT license) applicable
 * to the current version of the project delivered to anyone in the future.
 */

// Package version TODO
package version

import (
	"fmt"
)

// CCVersion describes version
// CCTag show the git tag for this version
// CCBuildTime show the compile time
var (
	CCVersion       = "17.03.28"
	CCTag           = "2017-03-28 Release"
	CCBRANCH        = ""
	CCBuildTime     = "2017-03-28 19:50:00"
	CCGitHash       = "unknown"
	CCRunMode       = "product"   // product, test, dev
	CCDistro        = "community" // enterprise, community
	CCDistroVersion = "9999.9999.9999"
	ServiceName     = "unknown"
	GoVersion       = "unknown"
)

// CCRunMode enumeration
var (
	CCRunModeProduct = "product"
	CCRunModeTest    = "test"
	CCRunModeDev     = "dev"
	CCRunModeForCI   = "for_ci"
)

var (
	// CCDistrEnterprise TODO
	CCDistrEnterprise = "enterprise"
	// CCDistrCommunity TODO
	CCDistrCommunity = "community"
)

// ShowVersion is the default handler which match the --version flag
func ShowVersion() {
	fmt.Printf("%s", GetVersion())
}

// GetVersion return the version info
func GetVersion() string {
	version := fmt.Sprintf(`Version     : %s
Tag         : %s
BuildTime   : %s
GitHash     : %s
RunMode     : %s
Distribution: %s
ServiceName : %s
GoVersion   : %s
`, CCVersion, CCTag, CCBuildTime, CCGitHash, CCRunMode, CCDistro, ServiceName, GoVersion)
	return version
}
